/*
 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.nio.channels;

import java.io.IOException;
import java.io.Closeable;


/**
 * 用于I/O操作的nexus。
 *
 * <p> 通道表示与实体(如硬件设备、文件、网络套接字或程序组件)的开放连接，
 * 这些实体能够执行一个或多个不同的I/O操作，例如读或写操作。
 *
 * <p> 通道要么是打开的，要么是关闭的。
 * 通道在创建时是打开的，一旦关闭，它将保持关闭状态。
 * 一旦一个通道被关闭，任何对它调用I/O操作的尝试都会导致抛出一个ClosedChannelException。
 * 通道是否打开可以通过调用它的isOpen方法来测试。
 *
 * <p> 通常，通道对于扩展和实现此接口的接口和类的规范中描述的多线程访问是安全的。
 *
 *
 * @author Mark Reinhold
 * @author JSR-51 Expert Group
 * @since 1.4
 */

public interface Channel extends Closeable {

    /**
     * 告知此通道是否打开。
     *
     * @return <tt>true</tt> if, and only if, this channel is open
     */
    public boolean isOpen();

    /**
     * 关闭这个通道。
     *
     * <p> 在通道关闭后，任何对其调用I/O操作的进一步尝试都将导致抛出一个ClosedChannelException。
     *
     * <p> 如果此通道已经关闭，那么调用此方法将不起作用。
     *
     * <p> 此方法可以在任何时候调用。
     * 但是，如果其他线程已经调用了它，那么另一个调用将阻塞，直到第一个调用完成，之后它将返回没有效果。</p>
     *
     * @throws  IOException  If an I/O error occurs
     */
    public void close() throws IOException;

}
